package com.aaa.dao;

import com.aaa.entity.Dept;
import com.aaa.entity.PageSort;
import com.aaa.entity.Userinfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author ：Teacher陈（86521760@qq.com）
 * @date ：Created in 2022/6/23 9:34
 * @description：
 * @modified By：
 * @version:
 */
public interface UserDao {
   /**
    * 查找全部用户，分页+模糊查询+排序
    * @param pageSort
    * @return List<Userinfo>
    */
   List<Userinfo> findAllUser(PageSort pageSort);
   List<Map<String, Object>> findAllUserInfoByName(Map map);
   /**
    * 用户名唯一性校验,查找不同名字
    * @param userinfo
    * @return boolean
    */
   List<Userinfo> findNoSameName(Userinfo userinfo);
   /**
    * 添加新用户
    * @param userinfo
    * @return int
    */
   Integer addUser(Userinfo userinfo);

   /**
    * 通过用户名查找用户
    * @param username
    * @return List<Userinfo>
    */
   List<Userinfo> findUserIdByName(String username);
   /**
    * 添加新用户后，向中间表tbl_user_role添加相应数据
    * @param userid
    * @param roleId
    * @return int
    */
   int addUserRole(@Param("userid") Integer userid, @Param("roleId") Integer roleId);
   /**
    * 通过id删除用户（单个和批量通用）(修改状态，不做物理删除)
    * @param userids
    * @return int
    */
   int deleteUserById(@Param("userids") String[] userids);
   /**
    * 重置用户密码
    * @param userinfo
    * @return int
    */
   int resetPassword(Userinfo userinfo);
   /**
    * 修改用户信息
    * @param userinfo
    * @return int
    */
   int updateUser(Userinfo userinfo);
   /**
    * 获取全部部门
    * @return List<Dept>
    */
   List<Dept> queryAllDept();
   /**
    * @create by: Fmc
    * @description: 通过session获取用户id并查找个人信息
    * @create time: 2022/6/29 10:06
    * @return: List<Userinfo>
    */
   List<Userinfo> selectById(Integer userid);
   /**
    * @create by: Fmc
    * @description: 修改个人信息
    * @create time: 2022/6/29 18:12
    * @return:
    */
   int updateOneself(Userinfo userinfo);
}
